﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using AdminCondominio.Persistencia;
using AdminCondominio.Dominio;

namespace AdminCondominio.Pruebas
{
    [TestFixture]
    public class TestCuotaDAO
    {

        private CuotaDAO cuotaDAO = new CuotaDAO();

        [Test]
        public void TestCrear()
        {
            try
            {
                Cuota cuota = new Cuota();
                cuota.Vivienda = new Vivienda();

                cuota.Vivienda.CoVivienda = 34;
                cuota.TxPeriodo = "12";
                cuota.Importe = (decimal)499.99;
                cuota.FeVencimiento = DateTime.Now;
                cuota.Estado = "P";//P => Pendiente; C => Cancelado;
                cuota.TipoPago = new TipoPago();
                //cuota.TipoPago.CoTipoPago = null; => Despues se paga
                //cuota.FecPago = DateTime.Now.AddDays(5);

                Cuota cuotaCreada = cuotaDAO.Crear(cuota);

                //Implementar las validaciones
                Assert.NotNull(cuotaCreada);
                Assert.AreEqual(cuotaCreada.mensaje, "OK.");
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        [Test]
        public void TestListarCuotasPendientes()
        {
            try
            {
                ICollection<Cuota> listCuotasPendientes = cuotaDAO.listarCuotasPendientes(34,"P");

                //Pruebas
                Assert.NotNull(listCuotasPendientes);
                Assert.DoesNotThrow(delegate { cuotaDAO.listarCuotasPendientes(34, "P"); });
                Assert.GreaterOrEqual(listCuotasPendientes.Count, 1);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        [Test]
        public void TestPagarCouta()
        {
            try
            {
                Cuota cuota = new Cuota();
                cuota.CoCuota = 3; // codigo de la cuota a pagar
                cuota.Vivienda = new Vivienda();
                cuota.Vivienda.CoVivienda = 7; //codigo de la vivienda
                cuota.TxPeriodo = "11"; // nro de periodo               
                cuota.Estado = "C";//P => Pendiente; C => Cancelado;
                cuota.TipoPago = new TipoPago();
                cuota.TipoPago.CoTipoPago = 1;
                cuota.FecPago = DateTime.Now;

                ICollection<Cuota> cuotaLista = cuotaDAO.modificar(cuota);

                //Pruebas
                Assert.NotNull(cuotaLista);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

    }
}